package org.hamcrest;
import junit.framework.TestCase;
public class TypeSafeMatcherTest extends TestCase {
private final Matcher<String> matcher = new TypeSafeMatcherSubclass();
public static class TypeSafeMatcherSubclass extends TypeSafeMatcher<String> {
@Override
public boolean matchesSafely(String item) {
return false;
}
@Override
public void describeMismatchSafely(String item, Description mismatchDescription) {
mismatchDescription.appendText("The mismatch");
}
public void describeTo(Description description) {
}
}
public void testCanDetermineMatcherTypeFromProtectedMatchesSafelyMethod() {
assertFalse(matcher.matches(null));
assertFalse(matcher.matches(10));
}
public void testDescribesMismatches() {
assertMismatchDescription("was null", null);
assertMismatchDescription("was a java.lang.Integer (<3>)", new Integer(3));
assertMismatchDescription("The mismatch", "a string");
}
private void assertMismatchDescription(String expectedDescription, Object actual) {
StringDescription description = new StringDescription();
matcher.describeMismatch(actual, description);
assertEquals(expectedDescription, description.toString());
}
}